package com.pe.pgn.clubpgn.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.pe.pgn.clubpgn.dao.ClienteEmpresaDao;
import com.pe.pgn.clubpgn.dao.SincronizacionFlotaDao;
import com.pe.pgn.clubpgn.domain.ClpbClienteEmpresa;
import com.pe.pgn.clubpgn.domain.beans.BNClienteEmpresa;
import com.pe.pgn.clubpgn.service.ClienteEmpresaService;

@Service("clienteEmpresaService")
public class ClienteEmpresaServiceImpl extends GenericManagerImpl<ClpbClienteEmpresa, Long>
		implements ClienteEmpresaService
	{
	
	@Autowired
	private ClienteEmpresaDao clienteEmpresaDao;
	
	@Autowired
	private SincronizacionFlotaDao sincronizacionFlotaDao;

	public List<BNClienteEmpresa> busquedaClientesPorFiltros(
			String deClienteEmpresa, String coRuc, Long lineaCreditoMinima,
			Long lineaCreditoMaxima, String coTipoLineaCredito, String habilitado) {
		
		return clienteEmpresaDao.busquedaClientesPorFiltros(deClienteEmpresa, coRuc, 
		lineaCreditoMinima, lineaCreditoMaxima, coTipoLineaCredito, habilitado);
	}
	
	public List<BNClienteEmpresa> busquedaClientesWizzar(
			String deClienteEmpresa, String coRuc, String deAlias,
			String habilitado) {
		return clienteEmpresaDao.busquedaClientesWizzar(deClienteEmpresa, coRuc, deAlias, habilitado);
	}

	public void eliminarClienteEmpresa(Long id) {
		clienteEmpresaDao.eliminarClienteEmpresa(id);		
	}

	public void guardarClienteEmpresa(ClpbClienteEmpresa clienteEmpresa) {
		clienteEmpresaDao.guardarClienteEmpresa(clienteEmpresa);		
	}

	public void guardarClienteEmpresaEstacion(ClpbClienteEmpresa clienteEmpresa) {
		clienteEmpresaDao.guardarClienteEmpresaEstaciones(clienteEmpresa);
		
	}

	public void guardarClienteEmpresaTope(ClpbClienteEmpresa clienteEmpresa) {
		clienteEmpresaDao.guardarClienteEmpresaTopes(clienteEmpresa);
	}

	public void eliminarTope(Long id) {
		clienteEmpresaDao.eliminarTope(id);
	}

	public BNClienteEmpresa obtenerClienteEmpresaTope(Long id) {
		return clienteEmpresaDao.obtenerClienteEmpresaTope(id);
	}

	public BNClienteEmpresa obtenerClienteEmpresa(Long clienteEmpresaID, Long flotaID) {
		return clienteEmpresaDao.obtenerClienteEmpresa(clienteEmpresaID,flotaID);
	}

	public BNClienteEmpresa obtenerClienteEmpresaEstacion(Long id) {
		return clienteEmpresaDao.obtenerClienteEmpresaEstacion(id);
	}

	public List<BNClienteEmpresa> obtenerClienteEmpresas(boolean esInicial) {		
		return clienteEmpresaDao.obtenerClienteEmpresas(esInicial);
	}

	public int validaAlias(String coAlias) {
		return clienteEmpresaDao.validaAlias(coAlias);
	}

	public int validaRazonSocial(String deNombreCliente) {
		return clienteEmpresaDao.validaRazonSocial(deNombreCliente);
	}

	public int validaRuc(String coRuc) {
		return clienteEmpresaDao.validaRuc(coRuc);
	}
	
	public int validaAlias(Long id, String coAlias) {
		return clienteEmpresaDao.validaAlias(id,coAlias);
	}

	public int validaRazonSocial(Long id, String deNombreCliente) {
		return clienteEmpresaDao.validaRazonSocial(id,deNombreCliente);
	}

	public int validaRuc(Long id, String coRuc) {
		return clienteEmpresaDao.validaRuc(id,coRuc);
	}

	public ClpbClienteEmpresa obtenerClienteEmpresaByID(Long id) {
		return clienteEmpresaDao.obtenerClienteEmpresaByID(id);
	}

	public BNClienteEmpresa obtenerBNClienteEmpresaByID(Long clienteEmpresaID) {
		return clienteEmpresaDao.obtenerBNClienteEmpresaByID(clienteEmpresaID);
	}

	public String verificarTopes(ClpbClienteEmpresa clienteEmpresa) {
		return clienteEmpresaDao.verificarTopes(clienteEmpresa,sincronizacionFlotaDao);
	}

	public void guardarClientesEmpresaEstacion(Long idEstacion, boolean stEstacion, boolean isNew) {
		clienteEmpresaDao.guardarClientesEmpresaEstacion(idEstacion, stEstacion, isNew);
	}

	public void guardarClienteEmpresaPorLineaCredito(
			ClpbClienteEmpresa clienteEmpresa) {
		clienteEmpresaDao.guardarClienteEmpresaPorLineaCredito(clienteEmpresa);
	}

	public List<BNClienteEmpresa> obtenerClienteEmpresasConLineaCredito(boolean esInicial) {
		return clienteEmpresaDao.obtenerClienteEmpresasConLineaCredito(esInicial);
	}

	public List<BNClienteEmpresa> busquedaClientesPorFiltrosConLineaCredito(
			String deClienteEmpresa, String coRuc, Long lineaCreditoMinima,
			Long lineaCreditoMaxima, String coTipoLineaCredito, String habilitado) {

		return clienteEmpresaDao.busquedaClientesPorFiltrosConLineaCredito(deClienteEmpresa, coRuc, 
		lineaCreditoMinima, lineaCreditoMaxima, coTipoLineaCredito, habilitado);
	}
}
